package com.elmcode.study.utils;//步骤
    //定义类实现Converter接口
    //实现未实现的方法

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class DateConverterUtil implements Converter<String, Date> {

    //定义全局日期类型转换器
        //步骤
            //实现Converter
            //实现未实现的方法
            //配置
                //以前
                    //<mvc:annotation-driver convert-service=??
                //现在
                    //@Component  交给容器管理

    @Override
    public Date convert(String source) {

        if(source == null || "".equals(source.trim())){
            return null;
        }

        //支持更多的格式
        //思路
            //使用正则表达式判断

         //正则判断
            //2011-11-11            //yyyy-MM-dd
            //2011/11/11            //yyyy/MM/dd
            //2011/11/11 11:11:11   //yyyy/MM/dd HH:mm:ss


        //参考

        SimpleDateFormat sdf = null;

        String pattern=null;
        if(source.matches("^1|2\\d{3}-((0[1-9])|(1[0-2]?))-((0[1-9])|([1-2][0-9])|(3[0-1]))$")){
            pattern = "yyyy-MM-dd";

        } else if(source.matches("^1|2\\d{3}/((0[1-9])|(1[0-2]?))/((0[1-9])|([1-2][0-9])|(3[0-1]))$")){
            pattern = "yyyy/MM/dd";
        }
        if(!StringUtils.isEmpty(pattern)){
            sdf = new SimpleDateFormat(pattern);
        }

        try {
            return sdf.parse(source);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}